package xiaohong.data.array;

import java.io.*;

/**
 * 稀疏数组练习
 */
public class SparseArray {


    public static void main(String[] args) throws IOException {

        int[][] charArray = new int[11][11];
        charArray[2][3] = 1;
        charArray[3][3] = 2;
        charArray[2][4] = 1;
        charArray[2][2] = 2;
        charArray[3][4] = 1;
        charArray[4][4] = 2;
        charArray[5][5] = 1;

        // 使用 try-with-resources 确保文件资源被正确关闭
        try (FileOutputStream fosOutput = new FileOutputStream("D:\\xiaohong.txt");
             BufferedWriter bwOutput = new BufferedWriter(new OutputStreamWriter(fosOutput));
             FileInputStream fileInput = new FileInputStream("D:\\xiaohong.txt")) {

            for (int[] chars : charArray) {
                for (int aChar : chars) {
                    bwOutput.write("  " + aChar);  // 每个数字前后添加空格
                }
                bwOutput.newLine();  // 写入新行
            }

            byte[] bytes = new byte[charArray.length];
            int read = fileInput.read(bytes);
            while (fileInput.available() > 0 ) {
                System.out.println(new String(bytes, 0, read));
            }


        } catch (IOException e) {
            e.printStackTrace();
        }



//        printArray(charArray);
//
//        System.out.println();
//        System.out.println("稀疏数组的遍历输出");
//
//        int sum = 0;
//        for (int[] chars : charArray) {
//            // 每一行的具体列值
//            for (int aChar : chars) {
//                if (aChar != 0) {
//                    sum ++ ;
//                }
//            }
//        }
//        int[][] charSparseArray = new int[sum + 1][3];
//        charSparseArray[0][0] = 11;
//        charSparseArray[0][1] = 11;
//        charSparseArray[0][2] = sum;
//        int count = 0;
//        for (int i = 0; i < charArray.length; i++) {
//            for (int j = 0; j < charArray[i].length; j++) {
//                if (charArray[i][j] != 0) {
//                    count++;
//                    charSparseArray[count][0] = i;
//                    charSparseArray[count][1] = j;
//                    charSparseArray[count][2] = charArray[i][j];
//                }
//            }
//        }
//
//        for (int[] ints : charSparseArray) {
//            System.out.printf("%4d    %4d    %4d%n", ints[0], ints[1], ints[2]);
//        }
//
//        System.out.println();
//
//        int[][] charArrayTwo = new int[charSparseArray[0][0]][charSparseArray[0][1]];
//
//        for (int i = 1; i < charSparseArray.length; i++) {
//            charArrayTwo[charSparseArray[i][0]][charSparseArray[i][1]] = charSparseArray[i][2];
//        }
//        System.out.println("稀疏数组转二维数组");
//        printArray(charArrayTwo);
    }

    private static void printArray(int[][] array) {
        // 行数据
        for (int[] chars : array) {
            // 每一行的具体列值
            for (int aChar : chars) {
                System.out.print("  "+aChar);
            }
            System.out.println();
        }
    }



}
